AIエージェント開発を体系的に学ぶには最適の入門書「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」

AIエージェント開発を体系的に学ぶには最適の入門書「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」

SageMaker Studio Code EditorとBedrockを用いたパターンの検証リポジトリも作りました!
Clock Icon2025.01.13

こんにちは、つくぼし(tsukuboshi0755)です!

自分の年末年始の課題図書にしていた「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」を読み終えて、とても良い本だと感じたので紹介したいと思います!

書籍情報

  • 発売日:2024/11/9
  • 著者
  • 出版社:技術評論社

https://gihyo.jp/book/2024/978-4-297-14530-9

前提条件

本書を読むために必要な前提条件があるため、以下で先に紹介します。

Pythonの基礎知識

本書は基本的にPythonで動くコードについて解説されているため、Pythonの基礎知識が必要になります。

Pythonの基本的な文法については解説されていないため、ご注意ください。

各種クラウドサービスへの登録

本書では、各種クラウドサービスを使って、セットアップを行う手順が解説されています。

クレジットカードでの登録が前提となり、デモを実施する際に数百円~数千円程度の課金が発生する可能性もあるためご注意ください。

ソフトウェアバージョン

本書に記載されているコードは、以下のソフトウェアバージョンを使用しています。

  • python:3.10
  • LangChain:0.3

付録:AWS上での検証方法の紹介

本書内ではGoogle Colab上でOpenAI APIを用いて、以下のリポジトリを元に検証します。

https://github.com/GenerativeAgents/agent-book

今回個人的にAWSを活用したパターンを学習したく、SageMaker Studio Code Editor上でBedrock APIを使用して検証してみました。

特にJupyter Notebookを直接実行する必要があるChapter02-09を対象としたコードについて、SageMaker Studio Code Editor上で実行するためのリポジトリをフォークで作成しましたので、ぜひご参照ください。

https://github.com/tsukuboshi/agent-book-with-aws

もし上記リポジトリを利用してAWS上で検証環境を整えたい場合、事前にSageMaker Studio Code Editorの起動及びBedrockのアクセス有効化が必要です。

SageMaker Studio Code Editorの起動方法及び使い方については、以下の記事を参考にしてください。

https://dev.classmethod.jp/articles/amazon-bedrock-workshop-with-sagemaker-studio/

またBedrockのアクセス有効化については、以下の記事を参考にしてください。

https://dev.classmethod.jp/articles/if-you-want-to-try-out-amazon-bedrock-from-the-management-console-you-can-set-up-access-to-base-models/

本書の構成

本書は以下のような構成になっています。

  • 第1章LLMアプリケーション開発の基礎
  • 第2章OpenAIのチャットAPIの基礎
  • 第3章プロンプトエンジニアリング
  • 第4章LangChainの基礎
  • 第5章LangChain Expression Language(LCEL)徹底解説
  • 第6章Advanced RAG
  • 第7章LangSmithを使ったRAGアプリケーションの評価
  • 第8章AIエージェントとは
  • 第9章LangGraphで作るAIエージェント実践入門
  • 第10章要件定義書生成AIエージェントの開発
  • 第11章エージェントデザインパターン
  • 第12章LangChain/LangGraphで実装するエージェントデザインパターン

なお本書にはありませんが、本記事では書評を書きやすくするために、便宜的に各章を以下のセクションにまとめて項目を少なくしております。
(あくまで個人的にまとめただけのセクションなのでご注意ください)

  1. 第1~3章LLM/プロンプトエンジニアリングの概要
  2. 第4~5章LangChainの概要
  3. 第6~7章RAGアプリ開発の知識
  4. 第8~10章AIエージェント開発の知識
  5. 第11~12章AIエージェントデザインパターンの知識

この後、上記の各セクションの特徴について、簡単に紹介していきます。

第1~3章 LLM/プロンプトエンジニアリングの概要

以下の章が該当します。

  • 第1章LLMアプリケーション開発の基礎
  • 第2章OpenAIのチャットAPIの基礎
  • 第3章プロンプトエンジニアリング

このセクションでは、LLMを用いたシステムを開発するにあたり、最低限必要な前提知識について説明されています。

まず第1章では、生成AIの現状について解説されています。

特に本書はAIエージェントの開発に焦点を当てており、今後AIエージェントがますます進化していく点に触れられています。

次に第2章では、生成AIにおける以下の基本的な概念について、ChatGPTを用いて解説されています。

  • Chat Model
  • Token
  • Chat Completions API
  • Function Calling

さらに第3章では、LLMアプリの開発に必要なプロンプトエンジニアリングの知識について解説されています。

詳細は、オープンソースとして公開されている以下のガイドにも記載されています。

https://www.promptingguide.ai/

第4~5章 LangChainの概要

以下の章が該当します。

  • 第4章LangChainの基礎
  • 第5章LangChain Expression Language(LCEL)徹底解説

このセクションでは、LLMアプリを開発する際に用いられる主要なフレームワークであるLangChainについて説明されています。

まず第4章では、LangChainの基本的な使い方についてに解説されています。

LangChainを用いる事で、複数のLLMの切り替えや、指示文のテンプレート化、アプリ側の処理の抽象化を簡単に実現できるようになります。

https://js.langchain.com/docs/introduction/

またLangChainの関連パッケージである、LangSmithやLangGraphといったエコシステムと組み合わせる事で、AIエージェントの開発をより効率的に進める事ができます。

review-langchain-langgraph-ai-agent1

参考:Introduction | 🦜️🔗 Langchain

本章ではLangChainにおける以下主要コンポーネントの内容について、解説されています。

  • LLM
  • Chat model
  • Prompt template
  • Output parser
  • LCEL関連
  • RAG関連

続いて第5章では、LangChainのv0.1以降で推奨されている記法である、LangChain Expression Language (LCEL)について詳細に解説されています。

現状LangChainではLCELでの記法が推奨されており、今後この記法が主流になっていくと考えられます。

そのためLangChainを用いた開発を実施する際は、LCELを理解しておく事が重要になっていきます。

具体的には以下のLCEL関連のコンポーネントについて解説されています。

  • Runnable
  • RunnableSequence
  • RunnableLambda
  • RunnableParallel
  • RunnablePassthrough

第6~7章 RAGアプリ開発の知識

以下の章が該当します。

  • 第6章Advanced RAG
  • 第7章LangSmithを使ったRAGアプリケーションの評価

このセクションでは、RAGアプリケーションの開発に関する知識について解説されています。

まず第6章では、Advanced RAGについて解説されています。

ここではRAGの検索精度を向上させるための様々な手法について、紹介されています。

Advanced RAGによる検索精度向上の工夫は多岐に渡り、LangChainでは以下のように整理され公開されています。

review-langchain-langgraph-ai-agent2

参考:langchain-ai/rag-from-scratch

本章には検索クエリ、検索後、複数Retriver使用の3つに分かれて解説されています。

続いて第7章では、LangSmithとRagasを用いて、RAGアプリケーションの評価を評価する方法について解説されています。

LangSmithはLangChainと統合して、トレース収集やプロンプト管理、評価といった生成AIアプリケーションの運用を支援するツールです。

https://docs.smith.langchain.com/

またRagasはRAGの検索精度を評価するためのツールであり、LangSmithと連携してRAGアプリケーションの評価を行うことができます。

https://docs.ragas.io/en/stable/

本章では上記のツールを用いて、データセットを生成し、オフライン評価やフィードバック収集を実施する方法が紹介されています。

第8~10章 AIエージェント開発の知識

以下の章が該当します。

  • 第8章AIエージェントとは
  • 第9章LangGraphで作るAIエージェント実践入門
  • 第10章要件定義書生成AIエージェントの開発

このセクションでは、AIエージェントの開発に関する知識について解説されています。

まず第8章では、AIエージェントの概要について解説されています。

AIエージェントの歴史やLLMエージェント用フレームワーク、マルチエージェント、エージェントの安全性の観点について触れられています。

上記の点からAIエージェントが現時点まででどのように進化し、また今後どのように進化していくかについて考察されています。

次に第9章では、LangGraphを用いてAIエージェントを開発する方法について解説されています。

LangGraphはLangChainの機能を拡張し、LLMを活用した複雑なワークフローを構築するためのライブラリです。

https://langchain-ai.github.io/langgraph/tutorials/introduction/

LangGraphを用いる事で、AIエージェントの開発をより効率的に進める事ができます。

review-langchain-langgraph-ai-agent3

参考:LangGraph

本章ではLangGraphにおける以下主要コンポーネントの内容について、解説されています。

  • State
  • Node
  • Edge
  • Graph

そして第10章では、要件定義書生成AIエージェントの開発について解説されています。

第9章で学んだLangGraphを用いて、要件定義書生成AIエージェントを開発する実装方法について解説されています。

具体的なAIエージェントの動作を確認する事で、AIエージェントの開発における実践的な知識を身につける事ができます。

第11~12章 AIエージェントデザインパターンの知識

以下の章が該当します。

  • 第11章エージェントデザインパターン
  • 第12章LangChain/LangGraphで実装するエージェントデザインパターン

このセクションでは、AIエージェントの開発において活用できるエージェントデザインパターンについて解説されています。

まず第11章では、エージェントデザインパターンとは何かついて解説されています。

エージェントデザインパターンは、AIエージェントを効率的に開発するためのパターンを指します。

本書では以下のエージェントデザインパターンに関する論文で紹介されている、18のデザインパターンについて紹介されています。

https://arxiv.org/pdf/2405.10467

最後に第12章では、第11章で紹介されたエージェントパターンの内主要なものについて、LangChainとLangGraphを用いた実装例が解説されています。

これにより、AIエージェントの開発において実際にどういった形でエージェントデザインパターンを活用できるかを学ぶ事ができます。

動作確認用のコードも合わせて紹介されているため、実際に手で動かしながら様々なエージェントデザインパターンを学ベます。

最後に

今回は「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」を紹介しました。

LangChainがv0.3となり安定バージョンとして活用できるようになったり、LangSmithやLangGraphといった運用ツールが充実してきた事で、LangChainによるAIエージェント開発にかなり取り組みやすくなってきていると感じました。

その上で、本書はAIエージェント開発において必要な基礎知識から、実際の開発手法まで幅広く解説されているため、AIエージェント開発を体系的に学びたい方には最適な入門書だと感じました。

LangChainを使った開発であったり、AIエージェント開発に興味がある方は、ぜひ一度手に取ってみると良いと思います!

以上、つくぼし(tsukuboshi0755)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.